package com.yuanzhi.train;

/**
 * 小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字（记作 x 和 y），请小扣说出计算指令：
 *
 * "A" 运算：使 x = 2 * x + y； "B" 运算：使 y = 2 * y + x。 在本次游戏中，店家说出的数字为 x = 1 和 y =
 * 0，小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s，字符串中字符的顺序表示计算顺序，请返回最终 x 与 y 的和为多少。
 *
 * 示例 1：
 *
 * 输入：s = "AB"
 *
 * 输出：4
 *
 * 解释： 经过一次 A 运算后，x = 2, y = 0。 再经过一次 B 运算，x = 2, y = 2。 最终 x 与 y 之和为 4。
 *
 * 提示： 0 <= s.length <= 10 s 由 'A' 和 'B' 组成
 * 
 * @author zhangyuanzhi
 * @since 2021/3/4 9:23
 */
public class CalculateRobot {
	public static int calculate(String s) {
		int x = 1;
		int y = 0;
		if ("".equals(s)) {
		    return 1;
        }
		for (int i = 0; i < s.length(); i++) {
			String item = s.substring(i, i + 1);
			if ("A".equals(item)) {
				x = 2 * x + y;
			} else if ("B".equals(item)) {
				y = 2 * y + x;
			} else {
				throw new IllegalArgumentException("unknown character");
			}
		}
		return x+y;
	}

	public static void main(String[] args) {
		System.out.println(calculate("ABBBBBA"));
        System.out.println(1 << 2);
    }
}
